/******************************************************************************
 Copyright (c) 2021-2025 Qualcomm Technologies International, Ltd.
 All Rights Reserved.
 Qualcomm Technologies International, Ltd. Confidential and Proprietary.

******************************************************************************/

/*!
@file    gatt_battery_server.h
@brief   Header file for the GATT battery server library.

        This file provides documentation for the GATT battery server library
        API (library name: gatt_battery_server).
*/

#ifndef GATT_BATTERY_SERVER_H_
#define GATT_BATTERY_SERVER_H_

#include "csr_bt_tasks.h"
#include "service_handle.h"
#include "csr_log_text_2.h"

CSR_LOG_TEXT_HANDLE_DECLARE(CsrBtGattLto);

/* @brief   Server messages an application task can receive from the battery server library */

#define GATT_BATTERY_SERVER_INIT_IND                                                    (0x00)
#define GATT_BATTERY_SERVER_INIT_CFM                                                    (0x01)

#define GATT_BATTERY_SERVER_READ_LEVEL_IND                                              (0x02)
#define GATT_BATTERY_SERVER_READ_CLIENT_CONFIG_IND                                      (0x03)
#define GATT_BATTERY_SERVER_WRITE_CLIENT_CONFIG_IND                                     (0x04)
#define GATT_BATTERY_SERVER_READ_PRESENTATION_IND                                       (0x05)
#define GATT_BATTERY_SERVER_INIT_DB_CFM                                                 (0x06)

#ifndef EXCLUDE_GATT_BATTERY_SERVICE_V1P1

#define GATT_BATTERY_SERVER_READ_BATTERY_LEVEL_STATUS_IND                               (0x07)
#define GATT_BATTERY_SERVER_READ_BATTERY_LEVEL_STATUS_CLIENT_CONFIG_IND                 (0x08)
#define GATT_BATTERY_SERVER_WRITE_BATTERY_LEVEL_STATUS_CLIENT_CONFIG_IND                (0x09)
#define GATT_BATTERY_SERVER_READ_BATTERY_LEVEL_STATUS_SERVER_CONFIG_IND                 (0x0a)
#define GATT_BATTERY_SERVER_WRITE_BATTERY_LEVEL_STATUS_SERVER_CONFIG_IND                (0x0b)

#define GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_IND                             (0x0c)
#define GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_CLIENT_CONFIG_IND               (0x0d)
#define GATT_BATTERY_SERVER_WRITE_ESTIMATED_SERVICE_DATE_CLIENT_CONFIG_IND              (0x0e)
#define GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_PRESENTATION_IND                (0x0f)

#define GATT_BATTERY_SERVER_READ_BATTERY_CRITICAL_STATUS_IND                            (0x10)
#define GATT_BATTERY_SERVER_READ_BATTERY_CRITICAL_STATUS_CLIENT_CONFIG_IND              (0x11)
#define GATT_BATTERY_SERVER_WRITE_BATTERY_CRITICAL_STATUS_CLIENT_CONFIG_IND             (0x12)

#define GATT_BATTERY_SERVER_READ_BATTERY_ENERGY_STATUS_IND                              (0x13)
#define GATT_BATTERY_SERVER_READ_BATTERY_ENERGY_STATUS_CLIENT_CONFIG_IND                (0x14)
#define GATT_BATTERY_SERVER_WRITE_BATTERY_ENERGY_STATUS_CLIENT_CONFIG_IND               (0x15)
#define GATT_BATTERY_SERVER_READ_EXTERNAL_SOURCE_POWER_PRESENTATION_IND                 (0x16)
#define GATT_BATTERY_SERVER_READ_PRESENT_VOLTAGE_PRESENTATION_IND                       (0x17)
#define GATT_BATTERY_SERVER_READ_AVAILABLE_ENERGY_PRESENTATION_IND                      (0x18)
#define GATT_BATTERY_SERVER_READ_AVAILABLE_BATTERY_CAPACITY_PRESENTATION_IND            (0x19)
#define GATT_BATTERY_SERVER_READ_CHARGE_RATE_PRESENTATION_IND                           (0x1a)
#define GATT_BATTERY_SERVER_READ_AVAILABLE_ENERGY_AT_LAST_CHARGE_PRESENTATION_IND       (0x1b)

#define GATT_BATTERY_SERVER_READ_SERIAL_NUMBER_STRING_IND                               (0x1c)
#define GATT_BATTERY_SERVER_READ_SERIAL_NUMBER_CLIENT_CONFIG_IND                        (0x1d)
#define GATT_BATTERY_SERVER_WRITE_SERIAL_NUMBER_CLIENT_CONFIG_IND                       (0x1e)
#define GATT_BATTERY_SERVER_READ_SERIAL_NUMBER_PRESENTATION_IND                         (0X1f)

#define GATT_BATTERY_SERVER_READ_BATTERY_TIME_STATUS_IND                                (0x20)
#define GATT_BATTERY_SERVER_READ_BATTERY_TIME_STATUS_CLIENT_CONFIG_IND                  (0x21)
#define GATT_BATTERY_SERVER_WRITE_BATTERY_TIME_STATUS_CLIENT_CONFIG_IND                 (0x22)
#define GATT_BATTERY_SERVER_READ_BATTERY_TIME_STATUS_PRESENTATION_IND                   (0x23)

#define GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_STATUS_IND                              (0x24)
#define GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_STATUS_CLIENT_CONFIG_IND                (0x25)
#define GATT_BATTERY_SERVER_WRITE_BATTERY_HEALTH_STATUS_CLIENT_CONFIG_IND               (0x26)
#define GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_SUMMARY_PRESENTATION_IND                (0x27)
#define GATT_BATTERY_SERVER_READ_CURRENT_TEMPERATURE_PRESENTATION_IND                   (0x28)

#define GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_INFORMATION_IND                         (0x29)
#define GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_INFORMATION_CLIENT_CONFIG_IND           (0x2a)
#define GATT_BATTERY_SERVER_WRITE_BATTERY_HEALTH_INFORMATION_CLIENT_CONFIG_IND          (0x2b)
#define GATT_BATTERY_SERVER_READ_MIN_DESIGNED_OPERATING_TEMPERATURE_PRESENTATION_IND    (0x2c)
#define GATT_BATTERY_SERVER_READ_MAX_DESIGNED_OPERATING_TEMPERATURE_PRESENTATION_IND    (0x2d)

#define GATT_BATTERY_SERVER_READ_BATTERY_INFORMATION_IND                                (0x2e)
#define GATT_BATTERY_SERVER_READ_BATTERY_INFORMATION_CLIENT_CONFIG_IND                  (0x2f)
#define GATT_BATTERY_SERVER_WRITE_BATTERY_INFORMATION_CLIENT_CONFIG_IND                 (0x30)
#define GATT_BATTERY_SERVER_READ_BATTERY_MANUFACTURE_DATE_PRESENTATION_IND              (0x31)
#define GATT_BATTERY_SERVER_READ_BATTERY_EXPIRATION_DATE_PRESENTATION_IND               (0x32)
#define GATT_BATTERY_SERVER_READ_BATTERY_DESIGNED_CAPACITY_PRESENTATION_IND             (0x33)
#define GATT_BATTERY_SERVER_READ_BATTERY_LOW_ENERGY_PRESENTATION_IND                    (0x34)
#define GATT_BATTERY_SERVER_READ_BATTERY_CRITICAL_ENERGY_PRESENTATION_IND               (0x35)
#define GATT_BATTERY_SERVER_READ_NOMINAL_VOLTAGE_PRESENTATION_IND                       (0x36)

#define GATT_BATTERY_SERVER_READ_MANUFACTURER_NAME_STRING_IND                           (0x37)
#define GATT_BATTERY_SERVER_READ_MANUFACTURER_NAME_STRING_CLIENT_CONFIG_IND             (0x38)
#define GATT_BATTERY_SERVER_WRITE_MANUFACTURER_NAME_STRING_CLIENT_CONFIG_IND            (0x39)
#define GATT_BATTERY_SERVER_READ_MANUFACTURER_NAME_STRING_PRESENTATION_IND              (0x3a)

#define GATT_BATTERY_SERVER_READ_MODEL_NUMBER_STRING_IND                                (0x3b)
#define GATT_BATTERY_SERVER_READ_MODEL_NUMBER_STRING_CLIENT_CONFIG_IND                  (0x3c)
#define GATT_BATTERY_SERVER_WRITE_MODEL_NUMBER_STRING_CLIENT_CONFIG_IND                 (0x3d)
#define GATT_BATTERY_SERVER_READ_MODEL_NUMBER_STRING_PRESENTATION_IND                   (0x3e)

#define GATT_BATTERY_SERVER_SEND_CFM_EVENT_IND                                          (0x3f)
#define GATT_BATTERY_SERVER_MESSAGE_TOP                                                 (GATT_BATTERY_SERVER_SEND_CFM_EVENT_IND + 1) 

 /*! @brief MACROS of charateristics flags. */

/* Flag fields for battery level status */
#define IDENTIFIER_PRESENT                                                              (0x01)
#define BATTERY_LEVEL_PRESENT                                                           (0x02)
#define ADDITIONAL_STATUS_PRESENT                                                       (0x04)

/* Flag fields for Power State */
#define BATTERY_LEVEL_CHANGE                                                            (0x50)
#define BATTERY_LEVEL_STATUS_IDENTIFER                                                  (0x52)
#define BATTERY_LEVEL_STATUS_BATTERY_LEVEL                                              (0x53)
#define POWER_STATE_BATTERY_PRESENT                                                     (0x55)
#define POWER_STATE_WIRED_EXTERNAL_POWER_SOURCE                                         (0x56)
#define POWER_STATE_BATTERY_CHARGE_STATE                                                (0x57)
#define POWER_STATE_BATTERY_CHARGE_LEVEL                                                (0x58)
#define ADDITIONAL_STATUS_SERVICE_REQUIRED                                              (0x5a)
#define ADDITIONAL_STATUS_BATTERY_FAULT                                                 (0x5b)
#define BATTERY_ENERGY_STATUS                                                           (0x5c)

/* Flag fields for battery critical status */
#define CRITICAL_POWER_STATE                                                            (0x01)
#define IMMEDIATE_SERVICE_REQUIRED                                                      (0x02)

/* Flag fields for battery energy status */
#define EXTERNAL_SOURCE_POWER_PRESENT                                                   (0x01)
#define PRESENT_VOLTAGE_PRESENT                                                         (0x02)
#define AVAILABLE_ENERGY_PRESENT                                                        (0x04)
#define AVAILABLE_BATTERY_CAPACITY_PRESENT                                              (0x08)
#define CHARGE_RATE_PRESENT                                                             (0x10)
#define AVAILABLE_ENERGY_AT_LAST_CHARGE_PRESENT                                         (0x20)

/* Flag fields for battery time status */
#define TIME_UNTIL_DISCHARGED_ON_STANDBY_PRESENT                                        (0x01)
#define TIME_UNTIL_RECHARGED_PRESENT                                                    (0x02)
#define BATTERY_TIME_STATUS_UNKNOWN                                                 (0xffffff)

/* Flag fields for battery health status */
#define BATTERY_HEALTH_SUMMARY_PRESENT                                                  (0x01)
#define CYCLE_COUNT_PRESENT                                                             (0x02)
#define CURRENT_TEMPERATURE_PRESENT                                                     (0x04)
#define DEEP_DISCHARGE_COUNT_PRESENT                                                    (0x08)

/* Flaf fields for battery health information */
#define CYCLE_COUNT_DESIGNED_LIFETIME_PRESENT                                           (0x01)
#define MIN_AND_MAX_OPERATING_TEMPERATURE_PRESENT                                       (0x02)

/* Flag fields for battery information */
#define BATTERY_MANUFACTURE_DATE_PRESENT                                                (0x01)
#define BATTERY_EXPIRATION_DATE_PRESENT                                                 (0x02)
#define BATTERY_DESIGNED_CAPACITY_PRESENT                                               (0x04)
#define BATTERY_LOW_ENERGY_PRESENT                                                      (0x08)
#define BATTERY_CRTICAL_ENERGY_PRESENT                                                  (0x10)
#define BATTERY_CHEMISTRY_PRESENT                                                       (0x20)
#define NOMINAL_VOLTAGE_PRESENT                                                         (0x40)
#define BATTERY_AGGREGATION_GROUP_PRESENT                                               (0x80)

/* Battery features field for battery information */
#define BATTERY_REPLACEABLE                                                             (0x01)
#define BATTERY_RECHARGEABLE                                                            (0x02)

/* Battery chemistry field in battery information */
#define UNKNOWN                                                                         (0x01)
#define ALKALINE_ZINC_MANGANESE_DIOXIDE                                                 (0x02)
#define LEAD_ACID                                                                       (0x03)
#define LITHIUM_IRON_DISULFIDE                                                          (0x04)
#define LITHIUM_MANGANESE_DIOXIDE                                                       (0x05)
#define LITHIUM_ION                                                                     (0x06)
#define LITHIUM_POLYMER                                                                 (0x07)
#define NICKEL_OXYHYDROXIDE                                                             (0x08)
#define NICKEL_CADMIUM                                                                  (0x09)
#define NICKEL_METAL_HYDRIDE                                                            (0x0a)
#define SILVER_OXIDE                                                                    (0x0b)
#define ZINC_CHLORIDE                                                                   (0x0c)
#define ZINC_AIR                                                                        (0x0d)
#define ZINC_CARBON                                                                     (0x0e)
#define OTHER                                                                           (0xe1)

#else
#define GATT_BATTERY_SERVER_MESSAGE_TOP                                                 (GATT_BATTERY_SERVER_INIT_DB_CFM + 1) 
#endif /* EXCLUDE_GATT_BATTERY_SERVICE_V1P1 */

typedef uint16 GattBatteryServerMessageId;

/*! @brief The battery server internal structure for the server role.

    This structure is visible to the application as it is responsible for managing resource to pass to the battery library.
    The elements of this structure are only modified by the battery library.
    The application SHOULD NOT modify the values at any time as it could lead to undefined behaviour.
 */
typedef struct __GBASS
{
    AppTaskData lib_task;
    AppTask app_task;
    bool notifications_enabled;
    CsrBtGattId gattId;
    uint16 start_handle;
    uint16 end_handle;
#ifndef CSR_BT_GATT_INSTALL_FLAT_DB
    ServiceHandle profileHandle;
#endif
#ifndef EXCLUDE_GATT_BATTERY_SERVICE_V1P1
        bool indicationsEnabled;
        bool broadcastEnabled;
#endif
} GBASS;

/*!
    @brief Status code returned following a GattBatteryServerInit().
*/
typedef enum
{
        /*! Indicates that the GATT Battery server initialisation has completed successfully */
    gatt_battery_server_init_success,
        /*! Indicates that the GATT Battery server initialisation has failed */
    gatt_battery_server_init_failed
} gatt_battery_server_init_status_t;

/*!
    @brief Status code returned from the GATT battery server library
    This status code indicates the outcome of the request.
*/
typedef enum
{
    gatt_battery_server_status_success,
    gatt_battery_server_status_registration_failed,
    gatt_battery_server_status_invalid_parameter,
    gatt_battery_server_status_not_allowed,
    gatt_battery_server_status_failed
} gatt_battery_server_status_t;

/*! @brief Contents of the GATT_BATTERY_SERVER_READ_LEVEL_IND message that is sent by the library,
    due to a read of the local battery level characteristic.
 */
typedef struct  __GATT_BATTERY_SERVER_READ_LEVEL_IND
{
    GattBatteryServerMessageId id;    /* GATT_BATTERY_SERVER_READ_LEVEL_IND */
    const GBASS *battery_server;
    uint32 cid;
} GATT_BATTERY_SERVER_READ_LEVEL_IND_T;

typedef  GATT_BATTERY_SERVER_READ_LEVEL_IND_T GATT_BATTERY_SERVER_READ_IND_T;

/*! @brief Contents of the GATT_BATTERY_SERVER_READ_CLIENT_CONFIG_IND message that is sent by the library,
     due to a read of the local battery client configuration characteristic.
*/
typedef struct  __GATT_BATTERY_SERVER_READ_CLIENT_CONFIG_IND
{
    GattBatteryServerMessageId id;    /* GATT_BATTERY_SERVER_READ_BATTERY_CLIENT_CONFIG_IND */
    const GBASS *battery_server;
    uint32 cid;
} GATT_BATTERY_SERVER_READ_CLIENT_CONFIG_IND_T;

typedef GATT_BATTERY_SERVER_READ_CLIENT_CONFIG_IND_T GATT_BATTERY_SERVER_SEND_CFM_EVENT_IND_T;

/*! @brief Contents of the GATT_BATTERY_SERVER_WRITE_CLIENT_CONFIG_IND message that is sent by the library,
    due to a write of the local battery client configuration characteristic.
 */
typedef struct __GATT_BATTERY_SERVER_WRITE_CLIENT_CONFIG_IND
{
    GattBatteryServerMessageId id;   /* GATT_BATTERY_SERVER_WRITE_BATTERY_CLIENT_CONFIG_IND */
    const GBASS *battery_server;
    uint32 cid;
    uint16 config_value;
}  GATT_BATTERY_SERVER_WRITE_CLIENT_CONFIG_IND_T;

/*! @brief Contents of the GATT_BATTERY_SERVER_READ_PRESENTATION_IND message that is sent by the library,
    due to a read of the local presentation characteristic.
 */
typedef struct __GATT_BATTERY_SERVER_READ_PRESENTATION_IND
{
    GattBatteryServerMessageId id;   /* GATT_BATTERY_SERVER_READ_PRESENTATION_IND */
    const GBASS *battery_server;
    uint32 cid;
}  GATT_BATTERY_SERVER_READ_PRESENTATION_IND_T;

typedef struct __GATT_BATTERY_SERVER_INIT_IND
{
    GattBatteryServerMessageId id;    /* GATT_BATTERY_SERVER_INIT_IND */
    const GBASS *battery_server;
    gatt_battery_server_init_status_t  status;

} GATT_BATTERY_SERVER_INIT_IND_T;

typedef struct __GATT_BATTERY_SERVER_INIT_DB_CFM
{
    GattBatteryServerMessageId id;    /* GATT_BATTERY_SERVER_INIT_DB_CFM */
    ServiceHandle profileHandle;
    gatt_battery_server_init_status_t  status;

} GATT_BATTERY_SERVER_INIT_DB_CFM_T;

/*!
    @brief Optional parameters used by the Initialisation API

    Parameters that can define how the battery server library is initialised.
*/
typedef struct
{
    bool enable_notifications;     /*! Flag that can be used to enable or disable notifications */

#ifndef EXCLUDE_GATT_BATTERY_SERVICE_V1P1
    bool enableIndications;       /*! Flag that can be used to enable or disable indicatoins*/
    bool enableBroadcast;         /*! Flag that can be used to enable or disable broadcast*/
#endif 

} gatt_battery_server_init_params_t;

#ifndef EXCLUDE_GATT_BATTERY_SERVICE_V1P1

typedef struct
{
    uint8 flags;
    uint8 batteryLevel;
    uint8 additionalStatus;
    uint16 powerState;
    uint16 identifier;
}GattBatteryLevelStatus;

typedef struct
{
    uint8  flags;
    uint16 externalSourcePower;
    uint16 presentVoltage;
    uint16 availableEnergy;
    uint16 availableBatteryCapacity;
    uint16 chargeRate;
    uint16 availableEnergyAtLastCharge;
}GattBatteryEnergyStatus;

/*! @brief
    This structure includes the Battery time status flags,
    Estimated time in minutes until dicharged,
    Estimated time in minutes until discharged assuming for the remaining time the device is in standby,
    Estimated time in minutes until recharged.
*/
typedef struct batteryTimeStatus{
    uint8 batteryTimeStatusFlags;
    uint24 timeUntilDischarged;
    uint24 timeUntilDischargedOnStandby; 
    uint24 timeUntilRecharged;
}GattBatteryTimeStatus;

/*! @brief
    This structure includes the Battery health status flags,
    Aggregation of overall health of the battery,
    Count value of charge cycles,
    Current temperature of the battery,
    Number of times the battery was completely discharged.
*/
typedef struct {
    uint8 batteryHealthStatusFlags;
    uint8 batteryHealthSummary;
    uint16 cycleCount;
    int8 currentTemperature;
    uint16 deepDischargeCount;
}GattBatteryHealthStatus;

/*! @brief
    This structure include the Batteryhealthinformation flags,
    Designed number of charge cycles supported by the device,
    Minimum designed operating temperature of the battery,
    Maximum designed operating temperature of the battery.
*/
typedef struct BatteryHealthInformation {
    uint8 batteryHealthInformationFlags;
    uint16 cycleCountDesignedLifetime;
    int8 minDesignedOperatingTemperature;
    int8 maxDesignedOperatingTemperature;
}GattBatteryHealthInformation;

/*! @brief
    This structure includes the Battery information flags,
    Supported features of the battery,
    Battery date of manufacture,
    Battery expiration date,
    Capacity of battery in kilowatt-hours at full charge,
    Battery energy value in kilowatt-hours when the battery is low,
    Battery energy value in kilowatt-hours when the battery is critical,
    Battery chemical composition,
    Nominal voltage of the battery,
    Battery Aggregate group to which this instance of the battery service is associated.
*/
typedef struct BatteryInformation {
    uint16 batteryInformationFlags;
    uint8 batteryFeatures;
    uint24 batteryManufactureDate;
    uint24 batteryExpirationDate;
    CsrUint16 batteryDesignedCapacity;  /*medfloat16*/
    CsrUint16 batteryLowEnergy;         /*medfloat16*/
    CsrUint16 batteryCriticalEnergy;    /*medfloat16*/
    uint8 batteryChemistry;
    CsrUint16 nominalVoltage;           /*medfloat16*/
    uint8 batteryAggregationGroup;
}GattBatteryInformation;

/*! @brief Contents of the GATT_BATTERY_SERVER_READ_SERVER_CONFIG_IND message that is sent by the library,
     due to a read of the local battery server configuration characteristic.
*/
typedef struct __GATT_BATTERY_SERVER_READ_SERVER_CONFIG_IND
{
    GattBatteryServerMessageId id;
    const GBASS *battery_server;
    uint32 cid;
} GATT_BATTERY_SERVER_READ_SERVER_CONFIG_IND_T;

/*! @brief Contents of the GATT_BATTERY_SERVER_WRITE_SERVER_CONFIG_IND message that is sent by the library,
    due to a write of the local battery client configuration characteristic.
 */
typedef struct __GATT_BATTERY_SERVER_WRITE_SERVER_CONFIG_IND
{
    GattBatteryServerMessageId id;   /* GATT_BATTERY_SERVER_WRITE_SERVER_CONFIG_IND */
    const GBASS *battery_server;
    uint32 cid;
    uint16 config_value;
}  GATT_BATTERY_SERVER_WRITE_SERVER_CONFIG_IND_T;

#endif

/*!
    @brief Initialises the Battery Service Library in the Server role.

    @param battery_server pointer to server role data
    @param app_task The Task that will receive the messages sent from this battery server library.
    @param init_params pointer to battery server initialization parameters
    @param start_handle start handle
    @param end_handle end handle

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerInit(GBASS *battery_server,
                           AppTask app_task,
                           const gatt_battery_server_init_params_t *init_params,
                           uint16 start_handle,
                           uint16 end_handle);

/*******************************************************************************************************************************************/
/*!
    @brief This API is used to return a battery level to the library when a GATT_BATTERY_SERVER_READ_BATTERY_IND message is received.

    @param battery_server The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_IND message.
    @param battery_level The battery level to return to the library. Valid values from 0-100, a value greater than 100% indicates error.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadLevelResponse(const GBASS *battery_server, uint32 cid, uint8 battery_level);

/*!
    @brief This API is used to return a battery level client configuration value to the library when a GATT_BATTERY_SERVER_CLIENT_CONFIG_IND message is received.

    @param battery_server The pointer that was in the payload of the GATT_BATTERY_SERVER_CLIENT_CONFIG_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_CLIENT_CONFIG_IND message.
    @param client_config The client configuration to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadClientConfigResponse(const GBASS *battery_server, uint32 cid, uint16 client_config);

/*!
    @brief This API is used to return a battery level to the library when a GATT_BATTERY_SERVER_READ_PRESENTATION_IND message is received.

    @param battery_server The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_PRESENTATION_IND message.
    @param name_space The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadPresentationResponse(const GBASS *battery_server, uint32 cid, uint8 name_space, uint16 description);

/*!
    @brief This API is used to notify a remote client of the battery level.
    This will only be allowed if notifications have been enabled by the remote device.

    @param battery_server The instance pointer that was passed into the GattBatteryServerInit API.
    @param number_cids The number of connection ID values passed in the cids parameter.
    @param cids The connection ID list. The battery level notification will be sent on each connection that is supplied in the list.
    @param battery_level The battery level to send in the notification.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSendLevelNotification(const GBASS *battery_server, uint16 number_cids, const uint32 *cids, uint8 battery_level);

#ifndef EXCLUDE_GATT_BATTERY_SERVICE_V1P1

/***********************************************************************************************************************************************/
/*!
    @brief This API is used to return a Battery Level Status to the library when a  message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_LEVEL_STATUS_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_LEVEL_STATUS_IND message.
    @param batteryLevelStatus The battery level status  to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryLevelStatusResponse(const GBASS* batteryServer, uint32 cid, GattBatteryLevelStatus batteryLevelStatus);

/*!
    @brief This API is used to return a battery level status client configuration value to the library when a
            GATT_BATTERY_SERVER_READ_BATTERY_LEVEL_STATUS_CLIENT_CONFIG_IND message is received.

    @param batteryServer The pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_LEVEL_STATUS_CLIENT_CONFIG_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_LEVEL_STATUS_CLIENT_CONFIG_IND message.
    @param clientConfig The client configuration to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerBatteryLevelStatusClientConfigResponse(const GBASS* batteryServer, uint32 cid, uint16 clientConfig);

/*!
    @brief This API is used to return a battery level status server configuration value to the library when a
            GATT_BATTERY_SERVER_READ_BATTERY_LEVEL_STATUS_SERVER_CONFIG_IND message is received.

    @param batteryServer The pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_LEVEL_STATUS_CLIENT_CONFIG_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_LEVEL_STATUS_SERVER_CONFIG_IND message.
    @param clientConfig The client configuration to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerBatteryLevelStatusServerConfigResponse(const GBASS* batteryServer, uint32 cid, uint16 serverConfig);

/*!
    @brief This API is used to notify a remote client of the battery level status.
    This will only be allowed if notifications have been enabled by the remote device.

    @param batteryServer The instance pointer that was passed into the GattBatteryServerInit API.
    @param numberCids The number of connection ID values passed in the cids parameter.
    @param cids The connection ID list. The battery level status notification will be sent on each connection that is supplied in the list.
    @param batteryLevelStatus The battery level status to send in the notification.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSendBatteryLevelStatusNotification(const GBASS* batteryServer, uint16 numberCids, const uint32* cids, GattBatteryLevelStatus batteryLevelStatus);

/*!
    @brief This API is used to indicate a remote client of the battery level status.
    This will only be allowed if indication have been enabled by the remote device.

    @param batteryServer The instance pointer that was passed into the GattBatteryServerInit API.
    @param numberCids The number of connection ID values passed in the cids parameter.
    @param cids The connection ID list. The battery level status indication will be sent on each connection that is supplied in the list.
    @param batteryLevelStatus The battery level status to send in the indication.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSendBatteryLevelStatusIndication(const GBASS* batteryServer, uint16 numberCids, const uint32* cids, GattBatteryLevelStatus batteryLevelStatus);

/***********************************************************************************************************************************************/
/*!
    @brief This API is used to return a Estimated Service date to the library when a GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_IND message.
    @param estimatedServiceDate The Estimated Service Date to return to the library. Valid decimal values from 0-1677204, a value greater than 1677204 indicates error.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadEstimatedServiceDateResponse(const GBASS* batteryServer, uint32 cid, uint32 estimatedServiceDate);

/*!
    @brief This API is used to return a Estimated Service Date client configuration value to the library when a
            GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_CLIENT_CONFIG_IND message is received.

    @param batteryServer The pointer that was in the payload of the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_CLIENT_CONFIG_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_CLIENT_CONFIG_IND message.
    @param clientConfig The client configuration to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerEstimatedServiceDateClientConfigResponse(const GBASS* batteryServer, uint32 cid, uint16 clientConfig);

/*!
    @brief This API is used to return a presentation format for Estimated service date to the library when a GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_PRESENTATION_IND
           message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadEstimatedServiceDatePresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/*!
    @brief This API is used to notify a remote client of the estimated service date.
    This will only be allowed if notifications have been enabled by the remote device.

    @param batteryServer The instance pointer that was passed into the GattBatteryServerInit API.
    @param numberCids The number of connection ID values passed in the cids parameter.
    @param cids The connection ID list. The estimated service date notification will be sent on each connection that is supplied in the list.
    @param estimatedServiceDate The estimated service date to send in the notification.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSendEstimatedServiceDateNotification(const GBASS* batteryServer, uint16 numberCids, const uint32* cids, uint32 estimatedServiceDate);

/*!
    @brief This API is used to indicate a remote client of the estimated service date.
    This will only be allowed if indication have been enabled by the remote device.

    @param batteryServer The instance pointer that was passed into the GattBatteryServerInit API.
    @param numberCids The number of connection ID values passed in the cids parameter.
    @param cids The connection ID list. The estimated service date indication will be sent on each connection that is supplied in the list.
    @param estimatedServiceDate The estimated service date to send in the indicatoin.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSendEstimatedServiceDateIndication(const GBASS* batteryServer, uint16 numberCids, const uint32* cids, uint32 estimatedServiceDate);

/***********************************************************************************************************************************************/
/*!
    @brief This API is used to return a battery critical status to the library when a GATT_BATTERY_SERVER_READ_BATTERY_CRITICAL_STATUS_IND  message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_CRITICAL_STATUS_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_CRITICAL_STATUS_IND message.
    @param batteryCriticalStatus The battery critical status to return to the library. Valid values from *********** a value greater than **************** indicates error.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryCriticalStatusResponse(const GBASS* batteryServer, uint32 cid, uint8 batteryCriticalStatus);

/*!
    @brief This API is used to return a battery critical status client configuration value to the library when a
            GATT_BATTERY_SERVER_READ_BATTERY_CRITICAL_STATUS_CLIENT_CONFIG_IND message is received.

    @param batteryServer The pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_CRITCAL_STATUS_CLIENT_CONFIG_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_CRITICAL_STATUS_CLIENT_CONFIG_IND message.
    @param clientConfig The client configuration to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerBatteryCriticalStatusClientConfigResponse(const GBASS* batteryServer, uint32 cid, uint16 clientConfig);

/*
    @brief This API is used to indicate a remote client of the BatteryCriticalStatus.
    This will only be allowed if indication have been enabled by the remote device.

    @param batteryServer The instance pointer that was passed into the GattBatteryServerInit API.
    @param numberCids The number of connection ID values passed in the cids parameter.
    @param cids The connection ID list. The battery critical status will be sent on each connection that is supplied in the list.
    @param batteryCriticalStatus The battey critical status to send in the indication.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSendBatteryCriticalStatusIndication(const GBASS* batteryServer, uint16 numberCids, const uint32* cids, uint8 battery_critcal_status);

/***********************************************************************************************************************************************/
/*!
    @brief This API is used to return a battery energy status to the library when a GATT_BATTERY_SERVER_READ_BATTERY_ENERGY_STATUS_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_ENERGY_STATUS_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_ENERGY_STATUS_IND message.
    @param battteryEnergyStatus The battery energy status to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryEnergyStatusResponse(const GBASS* batteryServer, uint32 cid, GattBatteryEnergyStatus batteryEnergyStatus);

/*!
    @brief This API is used to return a battery energy status client configuration value to the library when a
            GATT_BATTERY_SERVER_READ_BATTERY_ENERGY_STATUS_CLIENT_CONFIG_IND message is received.

    @param batteryServer The pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_ENERGY_STATUS_CLIENT_CONFIG_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_ENERGY_STATUS_CLIENT_CONFIG_IND message.
    @param clientConfig The client configuration to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerBatteryEnergyStatusClientConfigResponse(const GBASS* batteryServer, uint32 cid, uint16 clientConfig);

/*!
    @brief This API is used to notify a remote client of the battery energy status.
    This will only be allowed if notifications have been enabled by the remote device.

    @param batteryServer The instance pointer that was passed into the GattBatteryServerInit API.
    @param numberCids The number of connection ID values passed in the cids parameter.
    @param cids The connection ID list. The battery energy status notification will be sent on each connection that is supplied in the list.
    @param batteryEnergyStatus The battery energy status to send in the notification.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSendBatteryEnergyStatusNotification(const GBASS* batteryServer, uint16 numberCids, const uint32* cids, GattBatteryEnergyStatus batteryEnergyStatus);

/*
    @brief This API is used to indicate a remote client of the Battery Energy Status.
    This will only be allowed if indication have been enabled by the remote device.

    @param batteryServer The instance pointer that was passed into the GattBatteryServerInit API.
    @param numberCids The number of connection ID values passed in the cids parameter.
    @param cids The connection ID list. The battery energy status will be sent on each connection that is supplied in the list.
    @param batteryEnergyStatus The battey energy status to send in the indication.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSendBatteryEnergyStatusIndication(const GBASS* batteryServer, uint16 numberCids, const uint32* cids, GattBatteryEnergyStatus batteryEnergyStatus);

/*!
    @brief This API is used to return a presentation format for Estimated service date to the library when a GATT_BATTERY_SERVER_READ_EXTERNAL_SOURCE_POWER_PRESENTATION_IND
           message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadExternalSourcePowerPresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/*!
    @brief This API is used to return a presentation format for Estimated service date to the library when a GATT_BATTERY_SERVER_READ_PRESENT_VOLTAGE_PRESENTATION_IND
           message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadPresentVoltagePresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/*!
    @brief This API is used to return a presentation format for Estimated service date to the library when a GATT_BATTERY_SERVER_READ_AVAILABLE_ENERGY_PRESENTATION_IND
           message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadAvailableEnergyPresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/*!
    @brief This API is used to return a presentation format for Estimated service date to the library when a GATT_BATTERY_SERVER_READ_AVAILABLE_BATTERY_CAPACITY_PRESENTATION_IND
           message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadAvailableBatteryCapacityPresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/*!
    @brief This API is used to return a presentation format for Estimated service date to the library when a GATT_BATTERY_SERVER_READ_CHARGE_RATE_PRESENTATION_IND
           message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadChargeRatePresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/*!
    @brief This API is used to return a presentation format for Available energy at last charge to the library when a GATT_BATTERY_SERVER_READ_AVAILABLE_ENERGY_AT_LAST_CHARGE_PRESENTATION_IND
           message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_ESTIMATED_SERVICE_DATE_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadAvailableEnergyAtLastChargePresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/***********************************************************************************************************************************************/
/*!
    @brief This API is used to return a battery time status to the library when a GATT_BATTERY_SERVER_READ_BATTERY_TIME_STATUS_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_TIME_STATUS_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_TIME_STATUS_IND message.
    @param batteryTimeStatus The battery time status to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryTimeStatusResponse(const GBASS* batteryServer, uint32 cid, GattBatteryTimeStatus batteryTimeStatus);

/*!
    @brief This API is used to return a battery time status client configuration value to the library when a GATT_BATTERY_SERVER_READ_BATTERY_TIME_STATUS_CLIENT_CONFIG_IND message is received.

    @param batteryServer The pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_TIME_STATUS_CLIENT_CONFIG_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_TIME_STATUS_CLIENT_CONFIG_IND message.
    @param clientConfig The client configuration to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryTimeStatusClientConfigResponse(const GBASS* batteryServer, uint32 cid, uint16 clientConfig);

/*!
    @brief This API is used to return a battery time status to the library when a GATT_BATTERY_SERVER_READ_BATTERY_TIME_STATUS_PRESENTATION_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_TIME_STATUS_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_TIME_STATUS_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryTimeStatusPresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/*!
    @brief This API is used to notify a remote client of the battery time status.
    This will only be allowed if notifications have been enabled by the remote device.

    @param batteryServer The instance pointer that was passed into the GattBatteryServerInit API.
    @param cids The connection ID list. The battery time status notification will be sent on each connection that is supplied in the list.
    @param currentBatteryTimeStatus The battery time status to send in the notification.
    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSendBatteryTimeStatusNotification(const GBASS* batteryServer, uint16 numberCids, const uint32* cids, GattBatteryTimeStatus currentBatteryTimeStatus);

/*!
    @brief This API is used to indicate a remote client of the battery time status.
    This will only be allowed if indications have been enabled by the remote device.

    @param batteryServer The instance pointer that was passed into the GattBatteryServerInit API.
    @param cids The connection ID list. The battery time status indication will be sent on each connection that is supplied in the list.
    @param currentBatteryTimeStatus The battery time status to send in the indication.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSendBatteryTimeStatusIndication(const GBASS* batteryServer, uint16 numberCids, const uint32* cids, GattBatteryTimeStatus currentBatteryTimeStatus);

/***********************************************************************************************************************************************/
/*!
    @brief This API is used to return a battery health status to the library when a GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_STATUS_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_STATUS_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_STATUS_IND message.
    @param batteryHealthStatus The battery health status to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryHealthStatusResponse(const GBASS* batteryServer, uint32 cid, GattBatteryHealthStatus batteryHealthStatus);

/*!
    @brief This API is used to return a battery health status client configuration value to the library when a GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_STATUS_CLIENT_CONFIG_IND message is received.

    @param batteryServer The pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_STATUS_CLIENT_CONFIG_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_STATUS_CLIENT_CONFIG_IND message.
    @param clientConfig The client configuration to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryHealthStatusClientConfigResponse(const GBASS* batteryServer, uint32 cid, uint16 clientConfig);

/*!
    @brief This API is used to notify a remote client of the battery health status.
    This will only be allowed if notifications have been enabled by the remote device.

    @param batteryServer The instance pointer that was passed into the GattBatteryServerInit API.
    @param cids The connection ID list. The battery health status notification will be sent on each connection that is supplied in the list.
    @param batteryHealthStatus The battery health status to send in the notification.
    @param numberCids The number of connection ID values passed in the cids parameter.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSendBatteryHealthStatusNotification(const GBASS* batteryServer, uint16 numberCids, const uint32* cids, GattBatteryHealthStatus batteryHealthStatus);

/*!
    @brief This API is used to indicate a remote client of the battery health status.
    This will only be allowed if indications have been enabled by the remote device.

    @param batteryServer The instance pointer that was passed into the GattBatteryServerInit API.
    @param numberCids The number of connection ID values passed in the cids parameter.
    @param cids The connection ID list. The battery health status indication will be sent on each connection that is supplied in the list.
    @param batteryHealthStatus The battery health status to send in the indication.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSendBatteryHealthStatusIndication(const GBASS* batteryServer, uint16 numberCids, const uint32* cids, GattBatteryHealthStatus batteryHealthStatus);

/*!
    @brief This API is used to return the battery health summary to the library when a GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_SUMMARY_PRESENTATION_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_SUMMARY_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_SUMMARY_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryHealthSummaryPresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/*!
    @brief This API is used to return the current temperature to the library when a GATT_BATTERY_SERVER_READ_CURRENT_TEMPERATURE_PRESENTATION_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_CURRENT_TEMPERATURE_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_CURRENT_TEMPERATURE_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadCurrentTemperaturePresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/***********************************************************************************************************************************************/
/*!
    @brief This API is used to return a battery health information to the library when a GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_INFORMATION_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_INFORMATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_INFORMATION_IND message.
    @param batteryHealthInformation The battery health information to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryHealthInformationResponse(const GBASS* batteryServer, uint32 cid, GattBatteryHealthInformation batteryHealthInformation);

/*!
    @brief This API is used to return a battery health information client configuration value to the library when a GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_INFORMATION_CLIENT_CONFIG_IND message is received.

    @param batteryServer The pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_INFORMATION_CLIENT_CONFIG_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_HEALTH_INFORMATION_CLIENT_CONFIG_IND message.
    @param clientConfig The client configuration to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryHealthInformationClientConfigResponse(const GBASS* batteryServer, uint32 cid, uint16 clientConfig);

/*!
    @brief This API is used to indicate a remote client of the battery health information.
    This will only be allowed if indications have been enabled by the remote device.

    @param batteryServer The instance pointer that was passed into the GattBatteryServerInit API.
    @param numberCids The number of connection ID values passed in the cids parameter.
    @param cids The connection ID list. The battery health information indication will be sent on each connection that is supplied in the list.
    @param batteryHealthInformation The battery health information to send in the indication.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSendBatteryHealthInformationIndication(const GBASS* batteryServer, uint16 numberCids, const uint32* cids, GattBatteryHealthInformation batteryHealthInformation);

/*!
    @brief This API is used to return the minimum designed operating temperature to the library when a GATT_BATTERY_SERVER_READ_MIN_DESIGNED_OPERATING_TEMPERATURE_PRESENTATION_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_MIN_DESIGNED_OPERATING_TEMPERATURE_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_MIN_DESIGNED_OPERATING_TEMPERATURE_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadMinDesignedOperatingTemperaturePresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/*!
    @brief This API is used to return the max designed operating temperature to the library when a GATT_BATTERY_SERVER_READ_MAX_DESIGNED_OPERATING_TEMPERATURE_PRESENTATION_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_MAX_DESIGNED_OPERATING_TEMPERATURE_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_MAX_DESIGNED_OPERATING_TEMPERATURE_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadMaxDesignedOperatingTemperaturePresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/***********************************************************************************************************************************************/
/*!
    @brief This API is used to return a battery information to the library when a GATT_BATTERY_SERVER_READ_BATTERY_INFORMATION_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_INFORMATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_INFORMATION_IND message.
    @param batteryInformation The battery information to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryInformationResponse(const GBASS* batteryServer, uint32 cid, GattBatteryInformation batteryInformation);

/*!
    @brief This API is used to return a battery information client configuration value to the library when a GATT_BATTERY_SERVER_READ_BATTERY_INFORMATION_CLIENT_CONFIG_IND message is received.

    @param batteryServer The pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_INFORMATION_CLIENT_CONFIG_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_INFORMATION_CLIENT_CONFIG_IND message.
    @param clientConfig The client configuration to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryInformationClientConfigResponse(const GBASS* batteryServer, uint32 cid, uint16 clientConfig);

/*!
    @brief This API is used to indicate a remote client of the battery information.
    This will only be allowed if indications have been enabled by the remote device.

    @param batteryServer The instance pointer that was passed into the GattBatteryServerInit API.
    @param numberCids The number of connection ID values passed in the cids parameter.
    @param cids The connection ID list. The battery information indication will be sent on each connection that is supplied in the list.
    @param batteryInformation The battery information to send in the indication.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSendBatteryInformationIndication(const GBASS* batteryServer, uint16 numberCids, const uint32* cids, GattBatteryInformation batteryInformation);

/*!
    @brief This API is used to return the battery manufacture date to the library when a GATT_BATTERY_SERVER_READ_BATTERY_MANUFACTURE_DATE_PRESENTATION_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_MANUFACTURE_DATE_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_MANUFACTURE_DATE_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryManufactureDatePresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/*!
    @brief This API is used to return the battery expiration date to the library when a GATT_BATTERY_SERVER_READ_BATTERY_EXPIRATION_DATE_PRESENTATION_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_EXPIRATION_DATE_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_EXPIRATION_DATE_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryExpirationDatePresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/*!
    @brief This API is used to return the battery designed capacity to the library when a GATT_BATTERY_SERVER_READ_BATTERY_DESIGNED_CAPACITY_PRESENTATION_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_DESIGNED_CAPACITY_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_DESIGNED_CAPACITY_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryDesignedCapacityPresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/*!
    @brief This API is used to return the battery low energy to the library when a GATT_BATTERY_SERVER_READ_BATTERY_LOW_ENERGY_PRESENTATION_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_LOW_ENERGY_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_LOW_ENERGY_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryLowEnergyPresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/*!
    @brief This API is used to return the battery critical energy to the library when a GATT_BATTERY_SERVER_READ_BATTERY_CRITICAL_ENERGY_PRESENTATION_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_BATTERY_CRITICAL_ENERGY_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_BATTERY_CRITICAL_ENERGY_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadBatteryCriticalEnergyPresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);


/*!
    @brief This API is used to return the battery nominal voltage to the library when a GATT_BATTERY_SERVER_READ_NOMINAL_VOLTAGE_PRESENTATION_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_NOMINAL_VOLTAGE_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_NOMINAL_VOLTAGE_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadNominalVoltagePresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/***********************************************************************************************************************************************/
/*!
    @brief This API is used to return manufacturer name string to the library when a GATT_BATTERY_SERVER_READ_MANUFACTURER_NAME_STRING_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_MANUFACTURER_NAME_STRING_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_MANUFACTURER_NAME_STRING_IND message.
    @param manufacturerNameString The manufacturer name string to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadManufacturerNameStringResponse(const GBASS* batteryServer, uint32 cid, uint8* manufacturerNameString);

/*!
    @brief This API is used to return a manufacturer name string client configuration value to the library when a GATT_BATTERY_SERVER_READ_MANUFACTURER_NAME_STRING_CLIENT_CONFIG_IND message is received.

    @param batteryServer The pointer that was in the payload of the GATT_BATTERY_SERVER_READ_MANUFACTURER_NAME_STRING_CLIENT_CONFIG_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_MANUFACTURER_NAME_STRING_CLIENT_CONFIG_IND message.
    @param clientConfig The client configuration to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadManufacturerNameStringClientConfigResponse(const GBASS* batteryServer, uint32 cid, uint16 clientConfig);

/*!
    @brief This API is used to return the manufacturer name string to the library when a GATT_BATTERY_SERVER_READ_MANUFACTURER_NAME_STRING_PRESENTATION_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_MANUFACTURER_NAME_STRING_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_MANUFACTURER_NAME_STRING_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadManufacturerNameStringPresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/*!
    @brief This API is used to indicate a remote client of the manufacturer name string.
    This will only be allowed if indications have been enabled by the remote device.

    @param batteryServer The instance pointer that was passed into the GattBatteryServerInit API.
    @param cids The connection ID list. The manufacturer name string indication will be sent on each connection that is supplied in the list.
    @param manufacturerNameString The manufacturer name string to send in the indication.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSendManufacturerNameStringIndication(const GBASS* batteryServer, uint16 numberCids, const uint32* cids, uint8* manufacturerNameString);

/***********************************************************************************************************************************************/
/*!
    @brief This API is used to return model number string to the library when a GATT_BATTERY_SERVER_READ_MODEL_NUMBER_STRING_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_MODEL_NUMBER_STRING_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_MODEL_NUMBER_STRING_IND message.
    @param modelNumberString The model number string to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadModelNumberStringResponse(const GBASS* batteryServer, uint32 cid, uint8* modelNumberString);

/*!
    @brief This API is used to return a model number string client configuration value to the library when a GATT_BATTERY_SERVER_READ_MODEL_NUMBER_STRING_CLIENT_CONFIG_IND message is received.

    @param batteryServer The pointer that was in the payload of the GATT_BATTERY_SERVER_READ_MODEL_NUMBER_STRING_CLIENT_CONFIG_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_MODEL_NUMBER_STRING_CLIENT_CONFIG_IND message.
    @param clientConfig The client configuration to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadModelNumberStringClientConfigResponse(const GBASS* batteryServer, uint32 cid, uint16 clientConfig);

/*!
    @brief This API is used to return the model number string to the library when a GATT_BATTERY_SERVER_READ_MODEL_NUMBER_STRING_PRESENTATION_IND message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_MODEL_NUMBER_STRING_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_MODEL_NUMBER_STRING_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadModelNumberStringPresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);

/*!
    @brief This API is used to indicate a remote client of the model number string.
    This will only be allowed if indications have been enabled by the remote device.

    @param batteryServer The instance pointer that was passed into the GattBatteryServerInit API.
    @param cids The connection ID list. The model number string indication will be sent on each connection that is supplied in the list.
    @param modelNumberString The model number string to send in the indication.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSendModelNumberStringIndication(const GBASS* batteryServer, uint16 numberCids, const uint32* cids, uint8* modelNumberString);

/***********************************************************************************************************************************************/
/*!
    @brief This API is used to return a battery serial number string to the library when a  message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_SERIAL_NUMBER_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_SERIAL_NUMBER_IND message.
    @param serailNumber The battery serial number to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadSerialNumberResponse(const GBASS* batteryServer, uint32 cid, uint8* serailNumber, uint16 size);

/*!
    @brief This API is used to return a battery serial number client configuration value to the library when a
            GATT_BATTERY_SERVER_READ_SERIAL_NUMBER_CLIENT_CONFIG_IND message is received.

    @param batteryServer The pointer that was in the payload of the GATT_BATTERY_SERVER_READ_SERIAL_NUMBER_CLIENT_CONFIG_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_SERIAL_NUMBER_CLIENT_CONFIG_IND message.
    @param clientConfig The client configuration to return to the library.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSerialNumberClientConfigResponse(const GBASS* batteryServer, uint32 cid, uint16 clientConfig);

/*
    @brief This API is used to indicate a remote client of the serial number.
    This will only be allowed if indication have been enabled by the remote device.

    @param batteryServer The instance pointer that was passed into the GattBatteryServerInit API.
    @param numberCids The number of connection ID values passed in the cids parameter.
    @param cids The connection ID list. The battery serial number will be sent on each connection that is supplied in the list.
    @param serialNumber The battey serial number to send in the indication.
    @param size of serialNumber value.

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerSendSerialNumberIndication(const GBASS* batteryServer, uint16 numberCids, const uint32* cids, uint8* serailNumber, uint16 size);

/*!
    @brief This API is used to return a presentation format for Serail Number to the library when a GATT_BATTERY_SERVER_READ_SERIAL_NUMBER_PRESENTATION_IND
           message is received.

    @param batteryServer The instance pointer that was in the payload of the GATT_BATTERY_SERVER_READ_SERIAL_NUMBER_PRESENTATION_IND message.
    @param cid The connection identifier from the GATT_BATTERY_SERVER_READ_SERIAL_NUMBER_PRESENTATION_IND message.
    @param nameSpace The name space of the description (see Bluetooth.org Assigned Numbers for allowed values)
    @param description The description of this characteristic (see Bluetooth.org Assigned Numbers for Bluetooth SIG descriptions)

    @return TRUE if successful, FALSE otherwise

*/
bool GattBatteryServerReadSerialNumberPresentationResponse(const GBASS* batteryServer, uint32 cid, uint8 nameSpace, uint16 description);
#endif

/*!
    @brief Deinitialize Battery Service Library in the Server role

    @param battery_server The instance pointer that was passed into the GattBatteryServerInit API.

    @return TRUE if successful, FALSE otherwise.
*/
bool GattBatteryServerTerminate(const GBASS *battery_server);

#ifndef CSR_BT_GATT_INSTALL_FLAT_DB

/* New APIs based on service handle
 * All the functions are 1-1 mapping for above functions, difference being these are based on service handle
 */

void GattBatteryServerInitDb(AppTask app_task, const gatt_battery_server_init_params_t *init_params);

bool GattBatteryServerReadLevelResponseSh(ServiceHandle profileHandle, uint32 cid, uint8 battery_level);


bool GattBatteryServerReadClientConfigResponseSh(ServiceHandle profileHandle, uint32 cid, uint16 client_config);


bool GattBatteryServerReadPresentationResponseSh(ServiceHandle profileHandle, uint32 cid, uint8 name_space, uint16 description);


bool GattBatteryServerSendLevelNotificationSh(ServiceHandle profileHandle, uint16 number_cids, const uint32 *cids, uint8 battery_level);

bool GattBatteryServerTerminateSh(ServiceHandle profileHandle);
#endif

#endif
